package com.wondertek.service.service.business;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wondertek.service.dto.app.req.AppDerReq;
import com.wondertek.service.dto.app.req.AppDerUpdReq;
import com.wondertek.service.dto.app.res.DeviceErrorRecordKvRes;
import com.wondertek.service.dto.app.res.DeviceErrorRecordListRes;
import com.wondertek.service.dto.business.req.DerConfigAddReq;
import com.wondertek.service.dto.business.req.WebDerReq;
import com.wondertek.service.dto.business.res.DerConfigFindRes;
import com.wondertek.service.entity.business.DeviceErrorRecordPo;
import com.wondertek.service.sdk.iotdh.dto.res.PushDhMessage;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestBody;


/**
 * @author wangyu
 */

public interface DeviceErrorRecordService extends IService<DeviceErrorRecordPo> {

    /**
     * app查询报警
     * @param appDerReq
     * @return
     */
    Page<DeviceErrorRecordKvRes> findRecordList(AppDerReq appDerReq);

    /**
     * 根据id查询报警详情
     * @param id
     * @return
     */
    DeviceErrorRecordPo findRecordDetailsById(String id);


    /**
     * 根据id修改报警处理结果
     * @param req
     */
    void updateById(AppDerUpdReq req);


    /**
     * 根据id修改app已读状态
     * @param id
     */
     void updateAppReadById(String id);

    /**
     * 根据id修改web已读状态
     * @param id
     */
    void updateWebReadById(String id);

    /**
     * web查询报警
     * @return
     */
    Page<DeviceErrorRecordListRes> findWebRecordList(WebDerReq req);

    /**
     * web报警导出
     * @param req
     */
    void export(WebDerReq req, HttpServletResponse response);

    /**
     * 报警信息回调
     * @param pushDhMessage
     */
    void rollBackErrorRecord(PushDhMessage pushDhMessage);

    /**
     * 添加报警配置
     * @param derConfigAddReq
     */
    void addDerConfig(DerConfigAddReq derConfigAddReq);

    /**
     * 查询报警配置
     * @param deviceSn
     * @return
     */
    DerConfigFindRes findDerConfig(String deviceSn);
}
